//*********************************************************
//
//    Copyright (c) Microsoft. All rights reserved.
//    This code is licensed under the Apache License, Version 2.0.
//    THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
//    ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
//    IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
//    PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
//
//*********************************************************

using System;
using System.Collections.Generic;

namespace Microsoft.Research.DataLayer.ServiceModel
{
    [Serializable]
    public class JobDescriptionModel
    {
        private string jobName;
        private string jobNotes;
        private Guid workflowId;
        private UserModel scheduledBy;
        private NodeModel nodeToExecuteOn;


        /// <summary>
        /// Gets or sets the name of the job.
        /// </summary>
        /// <value>The name of the job.</value>
        public string JobName
        {
            get
            {
                return this.jobName;
            }
            set
            {
                this.jobName = value;
            }
        }

        /// <summary>
        /// Gets or sets the job notes.
        /// </summary>
        /// <value>The job notes.</value>
        public string JobNotes
        {
            get
            {
                return this.jobNotes;
            }
            set
            {
                this.jobNotes = value;
            }
        }

        /// <summary>
        /// Gets or sets the workflow id.
        /// </summary>
        /// <value>The workflow id.</value>
        public Guid WorkflowId
        {
            get
            {
                return this.workflowId;
            }
            set
            {
                this.workflowId = value;
            }
        }

        /// <summary>
        /// Gets or sets the scheduled by.
        /// </summary>
        /// <value>The scheduled by.</value>
        public UserModel ScheduledBy
        {
            get
            {
                return this.scheduledBy;
            }
            set
            {
                this.scheduledBy = value;
            }
        }

        /// <summary>
        /// Gets or sets the node to execute on.
        /// </summary>
        /// <value>The node to execute on.</value>
        public NodeModel NodeToExecuteOn
        {
            get
            {
                return this.nodeToExecuteOn;
            }
            set
            {
                this.nodeToExecuteOn = value;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        public List<ParameterDescriptionModel> RequiredParameters;

        public JobDescriptionModel()
        {
        }
    }
}
